送信元 IP 制限している IAM ユーザ で API Gateway の相互 TLS 認証登録の際に「Unable to access truststore URI ~~」が発生する場合の対応方法
困っていた内容
マネージメントコンソールにて API Gateway のカスタムドメインの相互 TLS 設定を登録する際に、トラストストア URI の入力箇所にアップロードした pem ファイル(S3 URI)を指定後、保存をすると以下のエラーメッセージが出力されました。
Unable to access truststore URI s3://{S3 バケット名}/******.pem version N/A.
なお、登録の際に利用する IAM ユーザには、AdministratorAccess の IAM ポリシーと、特定の IP アドレスからのアクセスを拒否するための IAM ポリシーを付与しています。
事象解消について、どのように対応すればよいでしょうか?
どう対応すればいいの?
操作を行っている IAM ユーザーのポリシーに IP アドレスによる Deny が含まれていることが原因です。
以下の様な IAM ポリシーをアタッチしている IAM ユーザーで操作を行った場合、AdministratorAccess 権限が付与されていても "Unable to access truststore URI ~~" のエラーが発生します。
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "<アクセス元の IP アドレス>" ] } } } }
これは API Gateway サービスがユーザーに変わって操作を行うために拒否されている動作となります。
そのため、IP アドレス制限の記述をなくすか、以下のように ViaAWSService キーを使用することによってもカスタムドメインの作成が成功します。
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "<アクセス元の IP アドレス>" ] }, "Bool": { "aws:ViaAWSService": "false" } } } }